Copyright(C) 1994,1995,1996,1997 Terumasa KODAKA , Takeshi KONO


■IDEインターフェース
基礎知識
      o IDEインターフェース内蔵機一覧
	-----------------------------+-----------------------------------------
	                             |機種
	-----------------------------+-----------------------------------------
	2.5",1.8"IDE HD内蔵(取外不可)|PC-9801NS・UR・P・NL/R・NL/A,PC-9821Ld
	2.5"IDE(PC-9801NS/L専用パック) |PC-9801NS/L
	2.5"IDE(98NOTE用ハードディスク    |98NOTE(PC-9801N・NV・NLと上記98NOTEを除く)
	            パック利用可能機)  |PC-9801US, PC-H98T, PC-9821初代・Ce・Ts・Es
	3.5"IDE 1台まで              |PC-9821Ap・As・Ae・Af・Ap2・As2・An・Cs2・Ce2・
	                             |  Cf・Cx・Cb・Xt13・Cx2・Cb2, PC-9801BA・BX
	3.5"IDE 2台まで              |PC-9821Ap3・As3・Bp・Bs・Be・Bf・
	                             |  Xa・Xf・Xn・Xp・Xs・Xe・Xe10・
	                             |PC-9801BA2・BS2・BX2・BX3・BX4
	3.5"IDE 4台まで              |PC-9821Xa16・Xa13・Xa12・Xa10・Xa9・Xa7・Xa7e
	                             |Xv13・Xb10
	-----------------------------+-----------------------------------------
	* PC-9821Cs2・Ce2・Cf・Cx・Cb・Cx2・Cb2では、CD-ROMを2台目IDEとして接続して
	  いる。
	* ファイルベイ搭載機では、CD-ROMまたはHDDを2台目IDEとして接続可能。
      o IDEハードディスクのBIOSインターフェースはSASIハードディスク互換。この
	ため、IDEハードディスクを実装した本体では、PC-9801-27(SASI I/Fボード)を
	使用することができない。ただし、IDEハードディスクを実装しなければ、
	IDEインターフェースを内蔵した機種でもPC-9801-27は使用できる。
      o	IDEインターフェースを内蔵した機種では、IDEハードディスクを実装すると
	拡張ROM領域のD8000〜D9FFFhにIDE BIOSが、DA000〜DBFFFhにIDE BIOSの
	ワークエリアがマッピングされる。IDEハードディスクを実装しなければ、
	IDE BIOSはマッピングされないので、拡張ROM領域やUMBとして利用できる。
	ただし、98NOTEとPCIスロット搭載機では、IDEハードディスクを実装して
	いなくてもD8000〜DBFFFhを拡張ROM領域やUMBとして利用することはでき
	ない。98NOTEではこの領域にシステム制御用のBIOSが配置されているため。PCI
	スロット搭載機では、PCI BIOSが配置されているため。
      o IDEインターフェースの外部割り込みはINT3(INT 11h)固定。
	また、PC-9800のIDEインターフェースでは、IDEドライブとのデータ転送に
	DMAを使用しない。
      u PC-9800では、IDEのMaster/Slaveの切り替えは使用しない。1台目と2台目の
	ドライブ切り換えは、外部回路でドライブの使用するI/Oポート全体を
	切り換えて行う。
      o IDEインターフェースが使用するI/Oアドレスは以下の通り。
	-----------+----+---+-----------------------------+--------------------
	I/Oアドレス|幅  |R/W|内容                         |ISAでのI/Oアドレス
	-----------+----+---+-----------------------------+--------------------
	0430h      |BYTE|R/W|IDEドライブ切り替え          |なし
	0432h      |BYTE|R/W|IDEドライブ切り替え          |なし
	0435h      |BYTE|R/W|不明                         |なし
	0640h      |WORD|R/W|Data Register                |01F0h
	0642h      |BYTE| R |Error Register               |01F1h
	0642h      |BYTE| W |Write Precomp Register       |01F1h
	0644h      |BYTE|R/W|Sector Count                 |01F2h
	0646h      |BYTE|R/W|Sector Number                |01F3h
	0648h      |BYTE|R/W|Cylinder Low                 |01F4h
	064Ah      |BYTE|R/W|Cylinder High                |01F5h
	064Ch      |BYTE|R/W|SDH Register                 |01F6h
	064Eh      |BYTE| R |Status Register              |01F7h
	064Eh      |BYTE| W |Command Register             |01F7h
	074Ch      |BYTE| R |Alternate Status Register    |03F6h
	074Ch      |BYTE| W |Digital Output Register      |03F6h
	074Eh      |BYTE| R |Digital Input Register       |03F7h
	-----------+----+---+-----------------------------+--------------------
	* 「ISAでのI/Oアドレス」欄は、IBM PC/AT互換機に接続されたIDEドライブが
	  使用するI/Oアドレス。
関連	0000:0457h
	0000:055Ch
	0000:0598h
	0000:059Ah
	0000:05B0h
	0000:05B1h			
	0000:05E8h
	0000:05ECh
	D800:0000〜D800:1FFFh		
	DA00:0000〜DA00:1FFFh		
	INT 11h(外部割り込み)
	INT 1Bh(IDE)
	I/O 000Ah bit 1			


I/O	0430h
名前	IDEバンク切り替え
	Undocumented
対象	(2台接続可能な)IDE I/F搭載機
チップ	IDE周辺
機能
	[READ/WRITE]
	bit 7〜0: 不明
		00h= IDEバンク#1
		01h= IDEバンク#2
解説  o 詳細不明
関連	I/O 0432h


I/O	0432h
名前	IDEバンク切り替え
	Undocumented
対象	(2台接続可能な)IDE I/F搭載機
チップ	IDE周辺
機能
	[READ/WRITE]
	bit 7〜0: バンク選択
		80h= 状態読み出しのためのダミーライト([WRITE]のみ)
		00h= IDEバンク#1選択
		01h= IDEバンク#2選択
解説  o I/O 0640〜064Eh,074Ch,074Ehで制御するIDEバンクを選択する。
      o	PC-9800では、バンクの選択はこのポートに接続された外部回路が行い、
	ドライブのI/Oポート全体が切り換えられる。
関連	I/O 0430h


I/O	0435h
名称	不明
	Undocumented
対象	PC-9821An・Ap3・As3・Cf・Cx・Cb・Xa10・Xa9・Xa7・Cx2・Cb2・Xt13・Xe10・Xa12・Xa7e,
	PC-9801BX4
機能
	[READ/WRITE]
	bit 7〜2: 不明
	bit 1: 不明
		1= IDE HDDなし
		0= IDE HDDあり
	bit 0: 不明
解説  o IDE HDDの有無によりbit 1が設定されるが、詳細は不明。
	
	
	
	
関連	I/O 00F0h bit 5


I/O	0640h
名前	Data Register
	Undocumented
対象	IDE I/F搭載機
チップ	IDEドライブ
機能
	[READ/WRITE]
	bit 15〜0: データレジスタ
解説  o データ転送を行う。データレジスタの幅は16ビット。
関連	


I/O	0642h
名前	Error Register,Write Precomp Register
	Undocumented
対象	IDE I/F搭載機
チップ	IDEドライブ
機能
	[READ]	Error Register
	bit 7: Bad Block Detected
		1= IDフィールドにBad Blockマークが検出された
		0= 通常
	bit 6: Data ECC Error
		1= データ領域に回復不可能ECCエラーが発生した
		0= 通常
	bit 5: Media Changed
		1= メディアが交換された
		0= メディアは交換されていない
		* PC-9800は使用しない
	bit 4: ID Not Found
		1= IDが発見できなかった
		0= 通常
	bit 3: Media Change Requested
		1= メディアの交換が要求されている 
		0= メディアの交換は要求されていない
		* PC-9800は使用しない
	bit 2: Aborted Command
		1= コマンド実行が中断された
		0= 通常
	bit 1: Track0 Error
		1= Restoreコマンド実行中にTrack0が検出できなかった
		0= 通常
	bit 0: Address Mark Not Found
		1= データ領域のアドレスマークを発見できなかった
		0= 通常
	解説  o IDEドライブのエラー状態を取得する
	[WRITE]	Write Precomp Register
	44h= Read/Write Longコマンド時のECC長さ7バイト
	55h= Read Ahead Cache ON
	AAh= Read Ahead Cache OFF
	BBh= Read/Write Longコマンド時のECC長さ4バイト
	解説  o IDEドライブの各種設定を行う。
関連	


I/O	0644h
名前	Sector Count
	Undocumented
対象	IDE I/F搭載機
チップ	IDEドライブ
機能
	[READ/WRITE]
	bit 7〜0: Sector Count
解説  o セクタ数を設定する。
      o 00hを指定すると、256が指定されたように動作する。
関連	


I/O	0646h
名前	Sector Number
	Undocumented
対象	IDE I/F搭載機
チップ	IDEドライブ
機能
	[READ/WRITE]
	bit 7〜0: Sector Number
解説  o セクタ番号を設定する。
関連	


I/O	0648h
名前	Cylinder Low
	Undocumented
対象	IDE I/F搭載機
チップ	IDEドライブ
機能
	[READ/WRITE]
	bit 7〜0: Cylinder Low
解説  o シリンダ番号の下位8ビットを設定する。
関連	I/O 064Ah


I/O	064Ah
名前	Cylinder High
	Undocumented
対象	IDE I/F搭載機
チップ	IDEドライブ
機能
	[READ/WRITE]
	bit 7〜0: Cylinder High
解説  o シリンダ番号の上位8ビットを設定する。
関連	I/O 0648h


I/O	064Ch
名前	SDH Register
	Undocumented
対象	IDE I/F搭載機
チップ	IDEドライブ
機能
	[READ/WRITE]
	bit 7: 未使用(1にする)
	bit 6: Binary Encoded Address Mode Select
		1= Logical Block Address
		0= Cylinder/Head/Sector
		* PC-9800では通常0に設定する
	bit 5: 未使用(1にする)
	bit 4: Drive Select
		* PC-9800では常に0を設定する
	bit 3〜0: Head Select
解説  o ヘッド番号を指定する
      u PC-9800では、LBA方式のアドレッシングは使用しない。
関連	I/O 074Eh


I/O	064Eh
名前	Status Register,Command Register
	Undocumented
対象	IDE I/F搭載機
チップ	IDEドライブ
機能
	[READ]	Status Register
	bit 7: Controller Busy
		1= コントローラはBUSY状態
		0= 通常
	bit 6: Drive Ready
		1= ドライブはREADY状態
		0= 通常
	bit 5: Write Fault
		1= 書き込み異常が発生した
		0= 通常
	bit 4: Seek Complete
		1= シーク動作が正常終了した
		0= シーク動作が異常終了した
	bit 3: Data Request
		1= ドライブがデータ転送準備を完了した
		0= ドライブがデータ転送準備を完了していない
	bit 2: Corrected Data
		1= 読み取りエラーが発生したがECCによって訂正された
		0= 通常
	bit 1: Index
		* ディスクの1回転につき1回出力されるパルス
	bit 0: Error
		1= コマンド処理中に何らかのエラーが発生した
		0= 通常
	解説  o 各種ステータスを取得する。
	[WRITE]	Command Register
	00h= Get drive Feature byte
	1xh= Recalibrate
	20h= Read(with Retries)
	21h= Read(without Retries)
	22h= Read Long(with Retries)
	23h= Read Long(without Retries)
	30h= Write(with Retries)
	31h= Write(without Retries)
	32h= Write Long(with Retries)
	33h= Write Long(without Retries)
	3Ch= Write verify
	40h= Read Verify(with Retries)
	41h= Read Verify(without Retries)
	50h= Format Track
	7xh= Seek
	8xh= Vendor Unique
	90h= Execute Drive Diagnostic
	91h= Initialize Drive Parameters
	94h= Standby Immediate
	95h= Idle Immediate
	96h= Standby
	97h= Idle
	98h= Check Power Mode
	99h= Set Sleep Mode
	9Ah= Vendor Unique	
	A0h= CD-ROMへSCSIコマンド送出
	C0h= Vendor Unique
	C1h= Vendor Unique
	C2h= Vendor Unique
	C3h= Vendor Unique
	C4h= Read Multiple
	C5h= Write Multiple
	C6h= Set Multiple Mode
	C8h= Read DMA(with Retries)
	C9h= Read DMA(without Retries)
	CAh= Write DMA(with Retries)
	CBh= Write DMA(without Retries)
	DBh= Acknowledge media change
	DCh= Boot - post-boot
	DDh= Boot - pre-boot
	DEh= Door lock
	DFh= Door unlock
	E0h= Standby Immediate
	E1h= Idle Immediate
	E2h= Standby
	E3h= Idle
	E4h= Read Sector Buffer
	E5h= Check Power Mode
	E6h= Set Sleep Mode
	E8h= Write Buffer
	E9h= Write same
	ECh= Identify
	EFh= Set Features
	Fxh= Vendor Unique
	解説  o IDEドライブにコマンドを出力する。
	      o ドライブによっては使用できないコマンドがある。どのコマンドが
		使用できるかは、Identifyコマンド等で調べる。
関連	INT 1Bh - Function D0h(IDE)
	INT 1Bh - Function E0h(IDE)
	INT 1Bh - Function F0h(IDE)


I/O	074Ch
名前	Alternate Status Register,Digital Output Register
	Undocumented
対象	IDE I/F搭載機
チップ	IDEドライブ
機能
	[READ]	Alternate Status Register
	解説  o 内容は、I/O 064EhのStatus Registerと同じ。ただし、
		割り込み出力をクリアせず、ステータスレジスタを読み出す
		ことができる。
	[WRITE]	Digital Output Register
	bit 7〜4: 未使用(0000bにする)
	bit 3: 未使用(1にする)
	bit 2: Reset
		1= IDEドライブをリセットする
		0= 通常
	bit 1: IRQ Enable
		1= IDEドライブからの割り込み禁止
		0= IDEドライブからの割り込み許可
	bit 0: 未使用(0にする)
	解説  o IDEドライブのリセット、割り込みの設定を行う。
関連	I/O 064Eh


I/O	074Eh
名前	Digital Input Register
	Undocumented
対象	IDE I/F搭載機
チップ	IDEドライブ
機能
	[READ]
	bit 7: 未使用
	bit 6: Write Gate
		1= 通常
		0= ドライブがデータを媒体上に書き込み中
	bit 5〜2: Head Select
		* SDHレジスタのHead Selectの反転
	bit 1,0: Drive Set1,Drive Set0
		10b= シングルモード/マスタ選択
		01b= スレーブ選択
解説  o IDEドライブの各種状態を読み出す。
関連	I/O 064Ch